This invention relates generally to storage and update of the operating system code, and more particularly, to storage and update of an image of system code in non-volatile storage.
Non-volatile storage may be well suited to long term storage of code and data in some cases. As one example, in a mobile network device, a non-volatile memory may store operating system code that may include the operating system, drivers, and applications. Using a software application, an original image of the operating system code may be installed within a non-volatile memory array in the form of an object. Often the operating system, drivers, and applications are combined into a single, large monolithic object. Before storing or installing the original image in a non-volatile storage, non-volatile file systems combine the operating system, drivers, and applications into a compiled image. Compiling may be used to link the operating system code into the single, large monolithic object that is installed as one code component for that image.
However, such a large monolithic object can only be updated or changed as a whole. Flash memory file systems use a code manager to modify or update a driver, an application, or the operating system of an original compiled image (e.g., original equipment manufacturer (OEM) image) stored as a relatively large single unit of the operating system code. For embedded systems, use of one large single object including the operating system, drivers and applications fails to provide the flexibility to update sections of the operating system code, as the entire image may need to be replaced, consuming a significant amount of time. Thus, operating system or driver patching, updates and addition of code to a system may not be feasible. Moreover, memory read and program performance varies significantly between different types of flash memories used to store the operating system code. For example, it takes a relatively longer time to access data from one type of flash memory than is the case with other types of flash memories. Also, without re-writing the entire image, tuning of the system based on an individual's usage of the device may not be supported.
Thus, there is a continuing need for alternate ways to store and update the system code, especially an image of operating system code in non-volatile storage.